let Stack = (function () {
  let items = new WeakMap()
  class Stack {
    constructor() {
      items.set(this, [])
    }
    pop() { // 出栈
      return items.get(this).pop()
    }
    push(v) { // 入栈
      items.get(this).push(v)
    }
    peek() { // 获取当前栈顶
      return items.get(this)[items.get(this).length - 1]
    }
    size() { // 栈长度
      return items.get(this).length
    }
    isEmpty() { // 栈是否为空
      return items.get(this).length === 0
    }
    clear() { // 清空栈
      items.get(this).length = 0
    }
  }
  return Stack
})()